Soru & Cevap

Class static problemi

31.07.2014 - 05:09

Class bölümündeyken kodlarımda bir hatayla karşılaştım : Description    Resource    Path    Location    Type
Cannot make a static reference to the non-static field Daire.çap    Class1.java    /testler/src/testler    line 17    Java Problem

ve : Description    Resource    Path    Location    Type
Cannot make a static reference to the non-static method bul() from the type Class1.Daire    Class1.java    /testler/src/testler    line 18    Java Problem

kodlar da şöyle : [code]

package testler;
import java.util.Scanner;
public class Class1 {

    static class Daire {
        private  double çap;
        public  double bul() {
            return (double) 3.14 * çap;
        }
    }

    public static void main(String[] args) {
        Scanner i = new Scanner(System.in);
        System.out.println("Çapı gir : ");
        double çap = i.nextDouble();
        Daire daire = new Daire();
        Daire.çap=çap;
        System.out.println(Daire.bul());
    }

}

[/code]

Sonra quick fix'ten baktım static ekle dedi bende ekledim ve sorun kalktı ben anlamadım public, static, void gibi şeylerin anlamları ne ?

 

171 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user inyourdream
inyourdream
01.08.2014 - 04:01

3ünüze de teşekkürler.

picture-1644-1382450673.jpg
alitascinten
31.07.2014 - 10:14

En basitiyle açıklamak gerekirse, statik olarak tanımlanmamış bir sınıfın içerisinde static sınıf yada metotlar tanımlayamazsın.

en dışta tanımladığın sınıf static olmalı.

public static Class1

{

public static Class Daire{}

public static void main() {}

picture-1372-1408467635.jpg
ahmtbrk
31.07.2014 - 05:54
Daire classi inner bi class yani dahili Class1 in icinde yazilmis bir class. Ona erisirken Class1.Daire seklinde erisiyor aslinda program static zorlamasinin sebebi odur. Void kavrami methodlarda olur geri dönüsü olmayan methodlarda kullanilir mesela zam yapmak icin bir fonksiyon yazarsin tek görevi zam yapmak olur sana geri deger dondurmesi yoktur.zamli halini donderecek olsan void yerine int vs yazardin. Public,protected ve private ise degiskenlere classlara methodlara vs erisim izinleri olarak dusunebilirsin.mobil oldugum icin detaylandiramiyorum gerekli cevabi google amcadan bulabilirsin